109B - Lucky Probability - CodeForces Solution


brute force probabilities *1900

Please click on ads to support us..

Python Code:

pl, pr, vl, vr, k = map(int, input().split())
p, x = [0, 1e9], 0


def g(x):
    if x < 1e9:
        p.append(x)
        g(10 * x + 4), g(10 * x + 7)


g(4), g(7), p.sort()


def f(a, b, c, d):
    res = max(0, min(b, d) - max(a, c) + 1)
    return res


for i in range(1, len(p) - k):
    l1 = p[i - 1] + 1
    l2 = p[i]
    l3 = p[i + k - 1]
    l4 = p[i + k] - 1
    x += f(l1, l2, vl, vr) * f(l3, l4, pl, pr) + f(l1, l2, pl, pr) * f(l3, l4, vl, vr)
    if k == 1 and max(vl, pl) <= l2 <= min(vr, pr):
        x -= 1
print(1. * x / ((pr - pl + 1) * (vr - vl + 1)))


Comments

Submit
0 Comments
More Questions

318A - Even Odds
550B - Preparing Olympiad
939B - Hamster Farm
732A - Buy a Shovel
1220C - Substring Game in the Lesson
452A - Eevee
1647B - Madoka and the Elegant Gift
1408A - Circle Coloring
766B - Mahmoud and a Triangle
1618C - Paint the Array
469A - I Wanna Be the Guy
1294A - Collecting Coins
1227A - Math Problem
349A - Cinema Line
47A - Triangular numbers
1516B - AGAGA XOOORRR
1515A - Phoenix and Gold
1515B - Phoenix and Puzzle
155A - I_love_username
49A - Sleuth
1541A - Pretty Permutations
1632C - Strange Test
673A - Bear and Game
276A - Lunch Rush
1205A - Almost Equal
1020B - Badge
1353A - Most Unstable Array
770A - New Password
1646B - Quality vs Quantity
80A - Panoramix's Prediction